#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTcpServer>
#include <QTcpSocket>
#include <QList>
#include "MonitoringUserSqlite.h"
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include "MonitoringDeviceSqLite.h"
#include "deviceModel.h"
#include <QList>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    void sendRegist(const QJsonObject& jsonObj,QTcpSocket *client);//注册
    void sendLogin(const QJsonObject& jsonObj,QTcpSocket *client);//登录
    void sendForgot(const QJsonObject& jsonObj,QTcpSocket *client);//忘记密码
    void sendMain(const QJsonObject& jsonObj,QTcpSocket *client);//主页
    void sendChangeEmail(const QJsonObject& jsonObj,QTcpSocket *client);//修改邮箱
    void sendChangePass(const QJsonObject& jsonObj,QTcpSocket *client);//修改密码
    void  handleSingleClientMessage(const QByteArray &data, QTcpSocket *client);

    void sendAddDevice(const QJsonObject& jsonObj,QTcpSocket *client);//添加设备
    void sendDeviceList(const QJsonObject& jsonObj,QTcpSocket *client);//设备列表
    void sendDeviceDelete(const QJsonObject& jsonObj,QTcpSocket *client);//删除设备
    void sendDeviceUpdate(const QJsonObject& jsonObj);//更新设备
    void sendDataRealData(const QJsonObject& jsonObj);//插入实时数据
    void sendSelectAllData(const QJsonObject& jsonObj,QTcpSocket *client);//查询所有数据
    void sendSelectReasonData(const QJsonObject& jsonObj,QTcpSocket *client);//根据条件查询数据
    void sendWarnRoleData(const QJsonObject& jsonObj,QTcpSocket *client);//插入警告规则
    void sendGetWarnRoleData(const QJsonObject& jsonObj,QTcpSocket *client);//获取警告规则
    void sendWarnRecodeData(const QJsonObject& jsonObj);//插入警告记录
    void sendGetWarnRecodeData(const QJsonObject& jsonObj,QTcpSocket *client);//获取警告记录
    void sendDeviceGroupList(const QJsonObject& jsonObj,QTcpSocket *client);//获取分组列表
    private slots:
        void handleNewConnection();
        void handleClientReadyRead();
        void handleClientDisconnected();
        void sendMessageToAllClients(const QByteArray &data);

private:
    Ui::Widget *ui;
     QTcpServer * m_tcpServer;
     QTcpSocket* m_tcpSocket;
     QList<QTcpSocket*> m_clients;
     MonitoringUserSqlite&userSqlite;
};
#endif // WIDGET_H
